/**
 * hnjz.com Inc.
 * Copyright (c) 2004-2014 All Rights Reserved.
 */
package com.hnjz.sys.roleFun;

import java.util.List;

import org.apache.ibatis.annotations.Param;

/**
 * 功能角色的对应关系
 * 
 * @author wumi
 * @version $Id: RoleFuncMapper.java, v 0.1 Feb 13, 2014 4:58:20 PM wumi Exp $
 */
public interface RoleFuncMapper {

    /**
     * 根据用户ID获取功能角色对象
     * 
     * @param id 主键，用户Id
     * @return 功能角色对象
     */
    RoleFunc findById(String id);

    /**
     * 插入一个{@link RoleFunc}
     * 
     * @param roleFunc {@link RoleFunc}
     * @return 插入的条数
     */
    int save(RoleFunc roleFunc);

    /**
     * 插入一个{@link RoleFunc}
     * 
     * @param roleFunc {@link RoleFunc}
     * @return 更新记录的条数
     */
    int update(RoleFunc roleFunc);

    /**
     * 根据Id删除{@link RoleFunc}
     * 
     * @param id  {@link RoleFunc} ID
     * @return 删除的条数
     */
    int deleteById(String id);

    /**
     * 根据功能ID删除{@link RoleFunc}
     * 
     * @param id  功能ID
     * @return 删除的条数
     */
    int deleteByFunId(String id);

    /**
     * 根据角色ID删除{@link RoleFunc}
     * 
     * @param id  角色ID
     * @return 删除的条数
     */
    int deleteByRoleId(String id);

    /**
     * 根据功能和角色获取{@link RoleFunc}的数目
     * 
     * @param func 功能ID
     * @param role 角色ID
     * @return {@link RoleFunc}数目
     */
    long selectCountByRoleAndFuc(@Param("func")
    String func, @Param("roleId")
    String roleId);
    
    /**
     * 查询出权限数据（所有角色，功能，操作）
     * 
     * @return 权限数据
     */
    List<RoleFuncOperV> findRoleFuncOps(); 
    
    /**
     * 查询出某个角色对应的菜单
     * 
     * @param roleId 角色Id
     * @return 某个角色对应的菜单
     */
    List<RoleFunc> findByRoleId(String roleId);

}
